package facade;


import java.util.List;
import java.util.Properties;

import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import sessionbeans.AdminArticulos;
import sessionbeans.AdminDistribucion;
import sessionbeans.AdminFabricacion;
import sessionbeans.AdminMateriaPrima;



import entities.CantidadMateriaPrima;
import entities.PedidoFabricacion;
import entities.PedidoProveedores;
import entitiesdto.ArticuloDTO;
import entitiesdto.CantidadArticuloDTO;
import entitiesdto.CantidadMateriaPrimaDTO;
import entitiesdto.EnvioCentroDistribucionDTO;
import entitiesdto.MateriaPrimaDTO;
import entitiesdto.PedidoFabricacionDTO;
import entitiesdto.PedidoProveedoresDTO;
import entitiesdto.SolicitudFabricacionDTO;
import entitiesdto.StockMateriaPrimaDTO;
import facade.SessionFacade;

@Stateful
public class SessionFacadeBean implements SessionFacade {

	private static SessionFacadeBean INSTANACE;
	// Estos son los session beans que el session facade se encarga de llamar

	@EJB
	private AdminArticulos adminArticulos;
	@EJB
	private AdminDistribucion adminDistribucion;
	@EJB
	private AdminFabricacion adminFabricacion;
	@EJB
	private AdminMateriaPrima adminMateriaPrima;

	InitialContext ic = null;

	public SessionFacadeBean() {
		try {
		
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

	public boolean ingresarNuevoArticulo(ArticuloDTO art) {
		return adminArticulos.ingresarNuevoArticulo(art);
	}

	public List<EnvioCentroDistribucionDTO>  generarReposicionArticulos() {
		return adminDistribucion.generarReposicionArticulos();
	}

	public List<MateriaPrimaDTO> getMateriasPrimas() {
		return adminArticulos.getMateriasPrimas();
	}

	public List<StockMateriaPrimaDTO> recibirProvedores(List<StockMateriaPrimaDTO> actualizacionStock) {
		return adminMateriaPrima.recibirProvedores(actualizacionStock);
	}

	public String getTexto(int numero) {
		return null;
	}

	public boolean actualizarStock(CantidadMateriaPrima cmp, boolean agregar) {
		return adminMateriaPrima.actualizarStock(cmp, agregar);
	}

	public PedidoProveedoresDTO comenzarFabricacion() {
		return adminFabricacion.comenzarFabricacion();
	}

	public boolean crearPedidoFabricacion(SolicitudFabricacionDTO solFabr) {
		return adminFabricacion.crearPedidoFabricacion(solFabr);
	}

	public boolean crearSolicitudFabricacion(SolicitudFabricacionDTO solFabr) {
		return adminFabricacion.crearSolicitudFabricacion(solFabr);
	}

	public boolean generarPedidoProveedores(CantidadMateriaPrima cmp) {
		return adminMateriaPrima.generarPedidoProveedores(cmp);
	}

	public List<CantidadArticuloDTO> getArticulosSolicitados() {
		return adminFabricacion.getArticulosSolicitados();
	}

	public boolean verificarMateriasPrimas(PedidoFabricacion pf) {
		return adminMateriaPrima.verificarMateriasPrimas(pf);
	}

	public MateriaPrimaDTO getMateriaPrimaByRef(String ref) {
		return adminMateriaPrima.getMateriaPrimaByRef(ref);
	}

	public List<PedidoFabricacionDTO> getPedidosFabricacion() {
		return adminDistribucion.getPedidosFabricacion();
	}

	public List<PedidoProveedoresDTO> getPedidosProveedores() {
		return adminFabricacion.getPedidosProveedores();
	}
}
